Nun, die Frage, wie effizient praktisch so eine Abspeicherung der Locheläste geschehen kann,
hängt unter anderem eben auch damit zusammen, wie der Adressraumbelegungsplan eines Betriebssystems
für einen gegebenen Rechner aussieht und nach welchem Adressraummodell das Betriebssystem
organisiert ist. Wir wollen mal hier ein durchaus gängiges Beispiel betrachten. Wir nehmen mal eine
32-bit-Maschine an und betrachten mal einen Hauptspeicher von circa 1 Gigabyte, der praktisch
im realen Adressraum in zwei Blöcken partitioniert ist. Da haben wir einmal so einen, sagen wir mal,
konventionellen Speicher ab der Adresse 0, am Anfang des Hauptspeichers von circa 640 Kilobyte und
denn danach kommend den größeren Teil als erweiterter Speicher ab der Adresse 0x100000.
Wir wollen mal weiter annehmen, dass für das Betriebssystem selbst und der Adressraum des
Betriebssystems eben eine identische Abbildung definiert ist und zwar eine identische Abbildung
von den logischen zu den realen Adressen. Wir schauen uns diese Abbildungstechnik gleich auf
den nächsten Fodi an. Jetzt wollen wir erstmal nur die Organisation dieses Adressraums kurz
beleuchten und dann würden wir ungefähr diese Sicht hier haben. Der gesamte Betriebssystem
Adressraum, die Partition, die für das Betriebssystem dort reserviert ist, geht von 0 bis hier unten 3
ffffff. Das wäre der gesamte Bereich, der wirklich dem Betriebssystem zur Verfügung steht. Das wäre
sozusagen der 1 Gigabyte Bereich. Danach kommt dann in dem Adressraum der Bereich, der für die
Maschinenprogramme vorgesehen ist. Dann sehen wir hier noch sowas wie Memory mapped IO Bereich,
dieser Speicher abgebildeten Ausgabebereich, je nach Hardware und Art und Weise wie die
Peripherie dann etwa angesteuert wird. Diese Adressraum Partition für das Betriebssystem
macht also die unteren 1 Gigabyte aus. Hier unten im konventionellen Speicher nehmen wir mal an,
dass da das gesamte komplette Betriebssystem zumindest von dem Textbestand, also der Code selbst,
Platz hat. Der erweiterte Speicher hier, der große weiße Fleck, den wir hier haben,
soll zur Ablage der Maschinenprogramme bestimmt sein. Das heißt, der Text, der Datenbereich,
die Stacks der Maschinenprogramme liegen alle in diesem erweiterten Speicher. Sehr wohl ist es aber
so, dass der Adressraumbereich für die Maschinenprogramme halt hier eben ab dieser Grenze
existiert. Man muss ja noch mal daran denken, dass die Maschinenprogramme für die Maschinenprogramme
ein logischer oder virtueller Adressraum definiert ist. Da werden diese logischen,
virtuellen Adressen auf die entsprechenden realen Adressen abgebildet, wo denn das jeweilige
Maschinenprogramm liegt. Dieses liegt dann eben in diesem realen Adressbereich, der durch diesen
erweiterten Speicher gegeben ist. Hier in diesem Speicherbereich liegt dann eben auch die Lochliste.
Das wäre die Idee. Initial hätten wir eine Situation, wo dann praktisch wir ein einziges
großes Loch haben in diesem erweiterten Speicher. Das heißt also, das wäre sozusagen der Urzustand,
nachdem das Betriebssystem sozusagen hochgefahren ist und bevor das erste Maschinenprogramm überhaupt
zur Ausführung kommt. Im Betriebssystem wird es dann also irgendeine Variable geben, letztendlich
ein Pointer auf den Anfang dieser Lochliste. Das heißt auf das Kopfelement dieser Lochliste.
Und da sehen wir eben, dass dieses Kopfelement das einzige Element ist. Es gibt keinen Nachfolger,
es ist der Niedelzeiger hier und hier wird dann halt entsprechend der Datenstruktur,
die wir vorhin betrachtet haben, eben die Größe für dieses Loch letztendlich ausgewiesen. Also
diese Zahl, die knapp hier in Gigabyte ausmacht, definiert dann letztendlich die Lochgröße über
diesen gesamten erweiterten Speicherbereich. Das ist die Situation, in der wir uns befinden.
So die identische Abbildung, dieses sogenannte Identity Mapping bedeutet denn letztendlich
nichts weiter, dass eben eine logische virtuelle Adresse immer identisch zu einer entsprechenden
realen Adresse ist. Und das haben wir hier sinnigerweise für den Adressraum des Betriebssystems
vorgenommen, indem denn alle logischen virtuellen Adressen eines Betriebssystems eben eins zu eins
gleichzeitig einer realen Adresse ist. Hier wäre natürlich dann auch entsprechend das Adressraum-
Konzept, die Seitendeskriptoren oder die Segment-Deskriptoren, je nachdem welches Modell
man fährt, entsprechend so programmiert, dass denn die Deskriptoren eine Abbildung von der logischen
virtuellen zur realen Adresse halt machen. Aber es ist eine identische Abbildung. Wenn wir also jetzt
von der Adresse 1024 halt ausgehen würden, logisch, dann würde der Wert 1024 eben auch tatsächlich
als reale Adresse über die Deskriptoren und den Abbildungstabeln als Ergebnis kommen und man dann
Presenters
Zugänglich über
Offener Zugang
Dauer
00:18:00 Min
Aufnahmedatum
2021-01-12
Hochgeladen am
2021-01-12 12:58:37
Sprache
de-DE